#ifndef __THREAD_H__
#define __THREAD_H__

#include "Nocopyable.hpp"
#include <pthread.h>

namespace wd
{

class Thread : Nocopyable
{
public:
    Thread();
    virtual ~Thread()
    {

    }

    void start(); // 启动一个子线程
    void join();  // 等待一个子线程运行结束
    

private:
    virtual void run() = 0;

    // 子线程入口函数
    static void * start_routine(void *);

private:
    pthread_t _pthid; // 线程ID
    bool _isrunning; // 线程状态，表示线程是否在运行
};

} // end of namespace wd

#endif

